<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initAutoLoader()
    {
        // Cria uma instancia de autoloader
        $autoloader = Zend_Loader_Autoloader::getInstance();

        // Registra o namespace Sample
        $autoloader->registerNamespace('Foxsis');
        $autoloader->setFallbackAutoloader(true);
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => '',
            'basePath'  => dirname(__FILE__)
        ));
        
        // criando a paginacao
        Zend_Paginator::setDefaultScrollingStyle('Sliding');
		Zend_View_Helper_PaginationControl::setDefaultViewPartial('partials/paginator.phtml');
		
        return $autoloader;
    }

    /**
     * Função faz a conexão com o banco de dados e registra a variável $db para
     * que ela esteja disponível em toda a aplicação.
     */
    protected function _initConnection()
    {
        /**
         * Obtém os resources(recursos).
         */
        $options    = $this->getOption('resources');
        $db_adapter = $options['db']['adapter'];
        $params     = $options['db']['params'];

        try{
            /**
             * Este método carrega dinamicamente a classe adptadora
             * usando Zend_Loader::loadClass().
             */
            $db = Zend_Db::factory($db_adapter, $params);

            /**
             * Este método retorna um objeto para a conexão representada por uma
             * respectiva extensão de banco de dados.
             */
            $db->getConnection();

            // Registra a $db para que se torne acessível em toda app
            $registry = Zend_Registry::getInstance();
            $registry->set('db', $db);

        }catch( Zend_Exception $e){
            echo "Estamos sem conexão ao banco de dados neste momento. Tente mais tarde por favor.";
            exit;
        }
    }

    /**
    * _initPlugins()
    * inicializa os plugins necessários na aplicacao
    */
    protected function _initPlugins(){
        $bootstrap = $this->getApplication();

        //se a aplicacao esta sendo extendida de Zend_Application

        // a var $bootstrap recebe $this
        if( $bootstrap instanceof Zend_Application ){
            $bootstrap = $this;
        }

        //recupera FrontController para fazer sua manipulacao
        $bootstrap->bootstrap('FrontController');
        $front = $bootstrap->getResource('FrontController');

        //registra os plugins no FrontController fazendo a mudanca dos modulos
        $plugin = new Foxsis_Plugins_Layout();
        $front->registerPlugin($plugin);
        
        //plugin para a verificação se o suario está logado
        $plugin = new Foxsis_Plugins_Auth();
        $front->registerPlugin($plugin);
    }
}